package com.itheima.exception_learn;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

/**
 * 关于try...catch中的finally子句
 * 1.在finally子句中的代码是最后执行的，并且一定会执行，即使try语句块中的代码出现了异常。
 * 2.finally语句通常使用在哪些情况下呢？
 *      通常在finally语句块中完成资源的释放或关闭,因为即使try语句块中的代码出现异常finally中的代码也会执行
 *
 */
public class ExceptionLearn2 {
        public static void main(String[] args){

            FileInputStream fis = null;
            try{
                //第一个异常:找不到文件
                fis = new FileInputStream("yunxi.txt");

                fis.read();

                String str =null;


                //第二个异常:空指针异常
                str.toString();
            } catch(FileNotFoundException e){
                e.printStackTrace(System.err);
            } catch(IOException e){
                e.printStackTrace(System.err);
            } catch(NullPointerException e){
                e.printStackTrace(System.err);
            } finally{
                if(fis != null){
                    try{
                        fis.close();
                    }catch(IOException e){
                        e.printStackTrace(System.err);
                    }
                }
            }


        }


}
